<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>绘制形状-path</title>
  <style>
    .wrap {
      width: 1000px;
      /*height: 800px;*/
      border: 1px solid #000;
      margin: 20px auto;
      padding: 10px;
    }
    .note{
      background: #fff3d4;
      border-color: #f6b73c;
      padding-left: 30px;
      box-sizing: border-box;
      max-width: 42rem;
      overflow: hidden;
      margin-bottom: 20px;
      /*padding: 10px;*/
      clear: none;
      font-size: 1.125rem;
      border-left-width: 5px;
      border-left-style: solid;
    }
  </style>
</head>
<body>

<div class="wrap">
  <h4>
    绘制path --- 二次贝塞尔曲线及三次贝塞尔曲线
  </h4>
  <ul>
    <li>
      quadraticCurveTo(cp1x, cp1y, x, y)
      绘制二次贝塞尔曲线，cp1x,cp1y为一个控制点，x,y为结束点。
    </li>
    <li>
      bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
      绘制三次贝塞尔曲线，cp1x,cp1y为控制点一，cp2x,cp2y为控制点二，x,y为结束点。
    </li>
  </ul>

  <div class="note">
    <strong>

    </strong>
  </div>

  <canvas id="canvas" width="150" height="200"></canvas>
  <canvas id="canvas2" width="150" height="200"></canvas>

</div>

</body>
</html>
<script>
  function quadraticCurve(){
    let canvas = document.getElementById('canvas');

    if(canvas.getContext){
      let ctx = canvas.getContext('2d');

      // 二次贝塞尔曲线
      ctx.beginPath();
      ctx.moveTo(75,25);
      ctx.quadraticCurveTo(25,25,25,62.5);
      ctx.quadraticCurveTo(25,100,50,100);
      ctx.quadraticCurveTo(50,120,30,125);
      ctx.quadraticCurveTo(60,120,65,100);
      ctx.quadraticCurveTo(125,100,125,62.5);
      ctx.quadraticCurveTo(125,25,75,25);
      ctx.stroke();

    }
  }

  quadraticCurve();
  
  function bezierCurve() {
    let canvas = document.getElementById('canvas2');
    if(canvas.getContext){
      let ctx = canvas.getContext('2d');

      // 三次贝塞尔曲线
      ctx.beginPath();
      ctx.moveTo(75,40);

      ctx.bezierCurveTo(75,37,70,25,50,25);
      ctx.bezierCurveTo(20,25,20,62.5,20,62.5);
      ctx.bezierCurveTo(20,80,40,102,75,120);
      ctx.bezierCurveTo(110,102,130,80,130,62.5);
      ctx.bezierCurveTo(130,62.5,130,25,100,25);
      ctx.bezierCurveTo(85,25,75,37,75,40);

      ctx.fill();


    }
  }

  bezierCurve();

</script>